package com.unitd.base.module.master.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.unitd.base.frame.util.BeanUtils;
import com.unitd.base.module.master.pojo.dto.CompanyDatasourceVO;
import com.unitd.base.module.master.mybatis.mapper.CompanyDatasourceMapper;
import com.unitd.base.module.master.pojo.po.CompanyDatasourcePO;
import com.unitd.base.module.master.service.CompanyDatasourceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 公司数据源信息管理业务逻辑处理接口实现类
 *
 * @author CompanyDatasource
 * @version 1.0
 * @filename CompanyDatasourceServiceImpl.java
 * @copyright www.pactera.com
 * @date 2020-08-13
 */
@Slf4j
@Service
public class CompanyDatasourceServiceImpl extends ServiceImpl<CompanyDatasourceMapper, CompanyDatasourcePO> implements CompanyDatasourceService {

    /**
     * 根据公司ID获取该公司下的所有有效数据源信息
     *
     * @param companyId 公司ID
     * @return 有效数据源信息
     */
    @Override
    public List<CompanyDatasourceVO> selectByCompanyId(Long companyId) {
        List<CompanyDatasourcePO> pos = baseMapper.selectByCompanyId(companyId);
        return pos.stream().map(this::convertPoToVo).collect(Collectors.toList());
    }

    /**
     * 将公司数据源信息PO对象转换成VO对象
     *
     * @param po 公司数据源信息po对象
     * @return 公司数据源信息vo对象
     */
    private CompanyDatasourceVO convertPoToVo(CompanyDatasourcePO po) {

        CompanyDatasourceVO vo = new CompanyDatasourceVO();

        BeanUtils.copyProperties(po, vo);
        return vo;
    }
}